const express = require('express')
const app = express()
//使用body解析
app.use(express.urlencoded({ extended: false }))
// app.use(bodyParser.urlencoded({ extended: false }))

const path = require('path')
const { postRouter } = require('./route/post.js')
const { getRouter } = require('./route/get.js')
// 引入cors模块,解决跨域问题
const cors = require('cors')
app.use(cors())
//使用路由
app.use('/api', postRouter)
app.use('/api', getRouter)
//使用body解析
// app.use(express.urlencoded({ extended: false }))
// app.use(bodyParser.urlencoded({ extended: false }))

//静态资源
app.use(express.static('./static'))
// app.use(bodyParser.json())

// token验证中间件
const { expressjwt: jwt } = require('express-jwt')

// 使用中间件jwt
app.use(
  jwt({
    secret: 'chenmy', // 生成 token 时的钥匙，必须和生成 token 时设置的统一
    algorithms: ['HS256'], // 必填，加密算法，无需了解
  }).unless({
    path: [
      { url: /^\/*/, methods: ['POST', 'GET', 'OPTIONS'] },
      '/api/login',
      '/api/register',
      '/api/upload',
      '/api/getcode',
    ], // 除了这些接口，其他都需要认证
  })
)

// 验证错误处理
app.use((err, req, res, next) => {
  console.log(err)
  if (err.name === 'UnauthorizedError') {
    // res.status(401).send('invalid token...');
    res.status(401).send({ status: 1, message: '身份认证失败' })
  } else {
    res.send({ err: err, msg: '网络连接失败！', data: req.auth })
  }
})

// app.get('/', (req, res) => {
//   res.sendFile(path.resolve(__dirname + '/static/html/index.html'))
// })

app.listen(3000, () => {
  console.log('*****服务器启动成功*****')
})
